import matplotlib.pyplot as plt
import numpy as np

"""
根据三个算法的思想，不调用opencv库函数，自己实现灰度化
"""
img = plt.imread("../images/lena.png")
h, w, _ = img.shape
# 创建和原图同等大小的图片，用于存储灰度化的结果
img_gray = np.zeros_like(img)
# R乘以0.299，G乘以0.587，B乘以0.114
for i in range(h):
    for j in range(w):
        # 1、加权均值法
        # img_gray[i, j, :] = img[i, j, 0] * 0.299 + img[i, j, 1] * 0.587 + img[i, j, 2] * 0.114
        # 2、平均值法
        # img_gray[i, j, :] = (img[i, j, 0] + img[i, j, 1] + img[i, j, 2]) / 3
        # 3、最大值法
        # plt.imread() 读取的图像的 取值范围是[0, 1] 而不是我们理解的[0, 255] 也就是说进行了归一化
        # img_gray[i, j, :] = max(int(img[i, j, 0]*255), int(img[i, j, 1]*255), int(img[i, j, 2]*255))/255
        img_gray[i, j, :] = max(img[i, j])

# 显示原图 和 灰度图
plt.subplot(121), plt.imshow(img), plt.title("original img"), plt.axis("off")
plt.subplot(122), plt.imshow(img_gray), plt.title("gray img"), plt.axis("off")
plt.show()

